package org.budo.cmbc.direct.sdk.entity;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 出金至绑定卡接口响应对象
 *
 * DS00000 交易成功， DS03H01、DS03J01未知， DS02057
 * 代表异步转账提交成功，最终转账结果需要再调用不确定交易查询进行查证，其它失败 DS03C12 账户余额不足
 * （注：PayMent为R/O，余额不足时报此错误） DS04011 交易金额超过单笔限额 DS04012 交易金额超过日累计限额 DS01062
 * 清算行行号必录 DS04C00 您的交易金额超过了小额实时支付的最高转账金额【废弃】 DS04C01 因人行小额支付汇路关闭，该笔转账暂无法办理【废弃】
 * DS04C02 因人行大额支付汇路关闭，该笔转账暂无法办理【废弃】 DS04C03 因人行网银互联汇路关闭，该笔转账暂无法办理【废弃】 DS04C05
 * 暂无汇路可支持您的资金转出，请尝试修改转账金额或转账时间（当前转出时间{0}，金额{1}）【新增】 DS03H01 系统繁忙，转账结果未知，以实际到账为准
 * 需通过不确定交易查询接口查证 DS03J01 系统繁忙，转账结果未知，以实际到账为准 需通过不确定交易查询接口查证 DS03C17
 * 本日提现超出限额(注：出金连动如意宝，超过如意宝实时赎回额度) DS02057 出金信息已提交，请以实际转账结果为准 DS03H13
 * 账户状态不正常,请检查是否存在冻结或圈存 DS01080 绑定卡未验证
 * 绑定卡在开户或绑卡变更时是会验证要素一致性的，如果校验不通过还让开户的话，开出的户就是未验证的，会做限制。现在是绑定卡验证不通过是不允许开户的
 * DS01161 出金超过系统设定大额阀值，须客户阅读知情提示 DS03C40 账户状态不正常，请检查是否存在冻结或圈存 DS03C03 出金失败 报此错误
 * 为理财份额赎回失败，电子账户的钱和理财份额保持原来不变 DS01U00 调用后台系统交易超时 DS0500U 后台系统超时 DS03H05
 * 转账失败,失败原因：{0} 报此错误，则表示钱从电子账户转出到绑定卡失败，此时钱留在电子账户，如果签约了自动申购理财产品，则转出失败的钱还会转化回理财份额
 * DSA1043 未签约如意宝(注：付款方PayMent上送如意宝R时，检查是否签约如意宝，若未签约则抛此错误) DS01199
 * 账户余额不足(注：PayMent为E，余额不足时报此错误)
 *
 * @author lmw
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
public class MELEBankRouterOutTransferResponse extends AbstractCmbcDirectResponse {
    private static final long serialVersionUID = -7306947700549730899L;

    public MELEBankRouterOutTransferResponse(String channelJnlNo, String responseJson) {
        super(channelJnlNo, responseJson);

        JSONObject json = JSON.parseObject(responseJson);
        this.channelJnlNo = json.getString("ChannelJnlNo");
        this.payMent = json.getString("PayMent");
    }

    /**
     * 渠道请求流水号
     */
    private String channelJnlNo;

    /**
     * 付款方 E-电子账户：账户余额出金。 R-如意宝：如意宝份额出金。 O-电子账户+如意宝 如果不上送付款方此字段则不返回
     */
    private String payMent;
}